#include "mcu.h"

int DisIntLevel;

u8 Mcu_UidCode[12];

// // void Nvic_Enable(IRQn_Type irqn) // 使用CMSIS接口
// // {
// //     NVIC_ClearPendingIRQ(irqn); // 清除NVIC中断标志位
// //     NVIC_SetPriority(irqn, 3);  // 优先级 3 （0~15）
// //     NVIC_EnableIRQ(irqn);       // NVIC允许中断
// // }

// HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
// HAL_NVIC_EnableIRQ(USART1_IRQn);

void EnablePeriphClk(void);
void SystemClock_Config(void);

void Mcu_Init(void)
{
  for(int i = 0; i < 12; i++)
  {
    Mcu_UidCode[i] = ((u8 *)UID_BASE)[i];
  }
#ifdef USE_HAL_DRIVER
  HAL_Init();// 这个函数配置了FLASH预取缓存，中断优先级分组，然后依次调用了 HAL_InitTick 、 HAL_MspInit 。
#else
  // 配置FLASH预取缓存
  // 配置中断优先级分组
#endif
  SystemClock_Config();
  EnablePeriphClk();
}

/**
 * 定义出来给 HAL_Init 调用，这里定义为空，SysTick未启动，配置时钟时的等待时间将无限长（无需担心，死等也没事，正好调试时看一下卡在哪）。
*/
HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
{
//   SysTick_Config(HAL_RCC_GetHCLKFreq() / 1000000 * SYSTICK_PERIOD); // 启动系统节拍计时器
  return HAL_OK;
}

WEAK void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */
  __disable_irq();
  while (1)
  {
  }
  /* USER CODE END Error_Handler_Debug */
}

